package cn.biplam.common.bean.systemManage.privi;

import cn.biplam.common.bean.Bean;
import cn.biplam.common.client.OperatorResult;
import cn.biplam.common.wrapper.ErrorMessage;

/**
 *  角色管理操作类
 * @author XiaoRuxing Dec 4, 200911:45:28 AM
 * @version 1.0
 */
public abstract class RoleManageBean extends Bean{

	/**
	 *  删除角色<BR>
	 *  级联操作:删除用户角色,删除用户权限
	 * @param roleId 角色ID
	 * @param getSql 是否获取SQL
	 * @return  getSql=true:返回删除角色的SQL<BR>
	 *          getSql=false:执行删除角色,返回是否删除成功<BR>
	 * @throws ErrorMessage 
	 */
	public abstract OperatorResult delRole(String roleId,boolean getSql) throws ErrorMessage;
	
	/**
	 *  删除角色主题<BR>
	 *  操作:删除当前主题下所有子主题和角色
	 * @param roleThemeId 角色主题ID
	 * @return 删除是否成功
	 * @throws ErrorMessage 
	 */
	public abstract OperatorResult delRoleTheme(String roleThemeId) throws ErrorMessage;
	
	/**
	 *  添加角色权限
	 * @param roleId  角色ID
	 * @param priviId 权限ID
	 * @return 添加结果
	 * @throws ErrorMessage 
	 */
	public abstract OperatorResult addRolePrivi(String roleId, String priviId) throws ErrorMessage;
	
	/**
	 *  删除角色权限
	 * @param rolePriviId  角色权限ID
	 * @param getSql       是否获取SQL
	 * @return 根据getSql值返回<BR>
	 *       true:返回删除角色权限SQL,false:执行删除,返回删除是否成功
	 * @throws ErrorMessage 
	 */
	public abstract OperatorResult delRolePrivi(String rolePriviId, boolean getSql) throws ErrorMessage;
	
	/**
	 *  获取角色管理操作实例
	 * @param userId 用户ID
	 * @return 角色管理操作实例
	 */
	public static RoleManageBean getInstance(String userId) throws ErrorMessage{
		return (RoleManageBean)get(RoleManageBean.class.getSimpleName(), userId);
	}
}
